<?php
/**
 * __autoload()
 * подгружает необходимые подклассы из библиотеки Wizard по мере надобности
 * @param string $classname
 * @return void
 */
function __autoload($classname){require(CORE_DIR.DS."wizard".DS.$classname.".class.php");}
/**
 * Wizard
 * Базовый класс для работы с объектами, информация о которых находится в базе данных.
 * @package yarland.ru SVN localhost
 * @author gogogo
 * @copyright 2009
 * @version $Id$
 * @access public
 */
class Wizard
{
	/** Объект класса MyDB */
	var $db;
	/** Таблица, содержащая данные об объектах */
	var $table = '';
	/** Префикс для таблиц, содержащих данные о дополнительных свойствах объектов */
	var $pfx = '';
	/** поле - ссылка на родителя в дополнительных таблицах */
	var $pid = 'pid';
	/** поле - уникальный автоинкрементный ключ в основной таблице, чаще всего 'id' */
	var $id = 'id';
	/**
	 * Wizard::__construct()
	 * 
	 * @param MyDB $db
	 * @param string $tablename
	 * @param string $pfx
	 * @param string $id
	 * @return void
	 */
	function __construct(MyDB $db,$tablename = '',$pfx = '',$pid = '')
	{
		$this->db = $db;
		if(strlen($tablename) > 0){$this->table = mysql_real_escape_string($tablename);}
		if(strlen($pfx) > 0){$this->pfx = mysql_real_escape_string($pfx);}
		if(strlen($pid) > 0){$this->pid = $pid;}
	}
	/**
	 * Wizard::getItem()
	 * 
	 * @param integer $id
	 * @return array || false on error
	 */
	function getItem($id = 0)
	{
		$item = array();
		if(intval($id) != 0)
		{
			$item = $this->db->fetch_one("SELECT * FROM $this->table WHERE $this->id = '".mysql_real_escape_string($id)."'",MYSQL_ASSOC);
			if(!empty($item)) return $item;
			else return false;
		}
		else return false;
	}
	function getItemsByList($list = array(), $orderby = "")
	{
		if(!empty($list))
		{
			foreach($list as $k => $v)
			{
				$escaped_list[$k] = mysql_real_escape_string($v);
			}
			$escaped_list = "'".implode("','",$list)."'";
			if(strlen($orderby) > 0)
			{
				$order = "ORDER BY ".mysql_real_escape_string($orderby);
			}
			else
			{
				$order = "ORDER BY FIELD($this->table.$this->id,$escaped_list)";
			}
			$getItems = $this->db->fetch_array("
			SELECT * 
			FROM $this->table 
			WHERE $this->id IN ($escaped_list) $order
			",MYSQL_ASSOC);
			if(!empty($getItems))
			{
				return $getItems;
			}
			else return false;
		}
		else return false;
	}
}
?>